#!/usr/bin/env python3
"""
WMS Sample 生产服务器版本
专门用于生产环境部署，只启动API服务器，不启动GUI界面
"""

import sys
import os
import signal
import time
import threading
from pathlib import Path

# 添加项目根目录到Python路径
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))

from src.core.path_manager import PathManager
from src.core.config import config
from src.models.database.database import DatabaseManager
from src.api.api_server import start_server, stop_server

def signal_handler(signum, frame):
    """处理系统信号，优雅关闭服务器"""
    print("\n收到停止信号，正在关闭服务器...")
    stop_server()
    print("服务器已停止")
    sys.exit(0)

def main():
    """主函数 - 生产服务器版本"""
    print("=" * 40)
    print("WMS Sample 料位管理系统 - 服务器版")
    print("=" * 40)
    
    try:
        # 初始化路径管理器
        path_manager = PathManager()
        print(f"✓ 路径管理器初始化完成")
        print(f"  - 应用根目录: {path_manager.app_dir}")
        print(f"  - 数据目录: {path_manager.data_dir}")
        print(f"  - 配置文件: {path_manager.get_config_file()}")
        
        # 初始化数据库
        print("正在初始化数据库...")
        db_manager = DatabaseManager()
        print("✓ 数据库初始化完成")
        
        # 注册信号处理器
        signal.signal(signal.SIGINT, signal_handler)
        signal.signal(signal.SIGTERM, signal_handler)
        
        # 启动API服务器
        print(f"正在启动API服务器...")
        print(f"  - 主机: {config.api_host}")
        print(f"  - 端口: {config.api_port}")
        
        # 在后台线程启动服务器
        server_thread = threading.Thread(target=start_server, daemon=True)
        server_thread.start()
        
        # 等待服务器启动
        time.sleep(2)
        
        print("=" * 40)
        print("🚀 WMS Sample 服务器启动成功！")
        print("=" * 40)
        print(f"📡 API服务地址: http://{config.api_host}:{config.api_port}")
        print(f"📚 API文档地址: http://{config.api_host}:{config.api_port}/docs")
        print(f"🌐 Web界面地址: http://{config.api_host}:{config.api_port}")
        print("=" * 40)
        print("按 Ctrl+C 停止服务器")
        print("=" * 40)
        
        # 保持主线程运行
        try:
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            signal_handler(signal.SIGINT, None)
            
    except Exception as e:
        print(f"❌ 启动失败: {e}")
        print("按回车键退出...")
        input()
        return False
    
    return True

if __name__ == "__main__":
    main() 